#include <iostream>
using namespace std;
int nums[] = {1, 2, 3, 4};
//2 的 n 次方个
void print(int n){
    for(int i = 0; i < (1 << n); i++){  //000 001 010 011 100 101 110 111
        for(int j = 0; j < n; j++){
            if(i & (1 << j)){   //i的二进制形式，从右往左第j位是否为1
                cout<<nums[j]<<" ";
            }
        }
        cout<<endl;
    }
}
int main(){
    int n = 4;
    print(n);
    return 0;
}